home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO081.dsk
/
MISCELLANEOUS
/
MISC.01.80.COL.txt
next >
Wrap
Text File
|
2012-02-16
|
5KB
|
83 lines
Apple II
Technical Notes
_____________________________________________________________________________
Developer Technical Support
Apple II Miscellaneous
#1: 80-Column Screen Dump
Revised by: Pete McDonald November 1988
Written by: Greg Seitz December 1984
This Technical Note presents an example assembly language program which dumps
the contents of the 80-column text screen to whatever is connected to COUT.
_____________________________________________________________________________
0000: 1 *
0000: 2 * 80-column screen dump
0000: 3 *
0000: 4 * By
0000: 5 * Greg Seitz
0000: 6 * 12-Jul-84
0000: 7 *
0000: 8 * This program will allow you to dump the contents
0000: 9 * of your 80-column text screen to whatever device is
0000: 10 * connected through COUT. If it is still connected to
0000: 11 * the screen, you will obviously be printing back
0000: 12 * what you were reading.
0000: 13 *
0000: FBC1 14 BASCALC EQU $FBC1 ;convert A reg to line addr on scrn
0000: FDED 15 COUT EQU $FDED ;A register out as ASCII
0000: C001 16 SET80COL EQU $C001 ;enable page 1/2 switches to control aux
0000: C055 17 TXTPAGE2 EQU $C055 ;page 2 or Aux depending
0000: C054 18 TXTPAGE1 EQU $C054 ;page 1 or main depending
0000: 0028 19 BASL EQU $28 ;BASCALC puts base addr. here
0000: 0029 20 BASH EQU $29 ;and high byte here.
0000: 21 *
1000: 1000 22 ORG $1000 ;or anywhere
1000: 1000 23 SCREENDMP EQU *
1000:A2 00 24 LDX #0 ;START AT LINE 0
1002: 25 *
1002:8A 26 SCRNLP TXA ;CALL BASCALC
1003:20 C1 FB 27 JSR BASCALC ;FOR ADDRESS OF LINE X
1006:A0 00 28 LDY #00 ;DO 80 CHARS STARTING FROM CHARACTER 0
1008: 29 *
1008: 1008 30 SCRNLP2 EQU *
1008:8D 01 C0 31 STA SET80COL ;SET UP FOR MAIN/AUX SWITCHING
100B:8D 55 C0 32 STA TXTPAGE2 ;START ON AUX
100E:98 33 TYA ;GET CURRENT INDEX FOR DIVIDE BY 2
100F:48 34 PHA ;SAVE ACTUAL COLUMN NUM WE'RE ON
1010:4A 35 LSR ;COLUMN/2=ODD OR EVEN BRANCH IF EVEN
1011:90 03 1016 36 BCC SCRNDMP1 ;TAKEN IF EVEN SINCE STATE IS PROPER
1013:8D 54 C0 37 STA TXTPAGE1 ;ELSE IF ODD TURN ON MAIN MEM
1016: 38 *
1016: 1016 39 SCRNDMP1 EQU *
1016:A8 40 TAY ;USE COLUMN/2 FOR INDEX NOW
1017:B1 28 41 LDA (BASL),Y ;GRAB THE CHARACTER
1019:8D 54 C0 42 STA TXTPAGE1 ;SEL MAIN SO IT SEES RIGHT SCREEN HOLES
101C:20 ED FD 43 JSR COUT ;PRINT THE CHARACTER
101F:68 44 PLA ;RECOVER COLUMN NUM
1020:A8 45 TAY ;INTO Y FOR NEXT TRIP
1021:C8 46 INY ;NEXT COLUMN NUM
1022:C0 50 47 CPY #80 ;ANY MORE?
1024:90 E2 1008 48 BCC SCRNLP2 ;TAKEN IF YES
1026:A9 8D 49 LDA #$8D ;ELSE CARRIAGE RETURN
1028:20 ED FD 50 JSR COUT ;OUT
102B:A9 8A 51 LDA #$8A ;LINE FEED
102D:20 ED FD 52 JSR COUT ;OUT
1030:E8 53 INX ;NEXT LINE
1031:E0 18 54 CPX #24 ;ANYMORE?
1033:90 CD 1002 55 BCC SCRNLP ;TAKEN IF YES
1035:60 56 RTS
FBC1 BASCALC ? 29 BASH 28 BASL FDED COUT
C054 TXTPAGE1 C055 TXTPAGE2 ?1000 SCREENDMP 1016 SCRNDMP1
1008 SCRNLP2 1002 SCRNLP C001 SET80COL
** SUCCESSFUL ASSEMBLY := NO ERRORS
** ASSEMBLER CREATED ON 15-JAN-84 21:28
** TOTAL LINES ASSEMBLED 56
** FREE SPACE PAGE COUNT 84